Today, numerous independent hardware vendors (IHV) produce networking Applications Specific Integrated Circuits (ASIC) to perform a myriad of packet processing tasks. Unfortunately, the current interface to such ASICs are generally memory mapped registers that have corresponding bit level behavior and documentation. However, not all IHVs limit their products to register level descriptions, some offer C-level or other software interfaces to the hardware. However, these interfaces are merely a convenient reflection of the underlying registers and, therefore, differ from one IHV to another.
Furthermore, the register level descriptions or their software interfaces to the hardware ASICs make these various products very difficult to use. In fact, these register level models represent a steep learning curve and tight coupling from an original equipment manufacturer (OEM) or an independent software vendor (ISV) that desires to use the ASIC or networking silicon in a product. At such a micro-level description (i.e., the register bits), it is difficult to write code that is reusable across these various ASICs. In addition, it is also difficult to decipher the micro-level functionality of the ASIC's networking silicon.
A recent trend in the networking industry is the replacement of ASIC, which are relatively inflexible, with more programmable but still performance oriented network devices such as network processors. Unfortunately, network processors are generally in their infancy stages and do not have an abstract programming model or do not have one expressive and flexible enough to grow with advances in the processor itself. Generally, network elements such as switches and routers can be classified into three logical operation components: the control plane, the forwarding plane and the management plane.
In general, the control plane executes different signaling and/or routing protocols and provides all the routing information to the forwarding plane. The forwarding plane makes decisions based on this information and performs operations on packets such as forwarding classification, filtering and so on. An orthogonal management plane manages the control and forwarding planes. However, the introduction of standardized application programming interfaces (API) within the above-mentioned planes can help system vendors OEMs and end users of these network elements to mix and match components available from different vendors to achieve a device of their choice.